home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / System / GamePort.st < prev    next >
Text File  |  2000-02-16  |  3KB  |  112 lines

  1. " ---------------------------------------------------------------------"
  2. " GamePort Class allows the user of AmigaTalk to utilize the           "
  3. "GamePort Device that the Amiga PC uses to detect input events, such as"
  4. "mouse movement or button clicks or joystick movement.                 "
  5. ""
  6. "  WARNING:  You should know what you're doing to the Amiga OS before  "
  7. "            messing with this Class, or any other System Class!       "
  8. " ---------------------------------------------------------------------"
  9.  
  10. Class GamePort :Device
  11. ! pname !
  12. [
  13.   openGamePort: whichUnit named: portname
  14.     <primitive 223 1 portname whichUnit>.
  15.     pname <- portname.
  16.     ^ self
  17. |   
  18.   closeGamePort
  19.     <primitive 223 0 pname>
  20. |
  21.   clearGamePortBuffer
  22.     <primitive 223 6 pname>
  23. |
  24.   getControllerType
  25.     "The integer returned by this method is one of the following: "
  26.  
  27.                      "  GPCT_ALLOCATED    -1"
  28.                      "  GPCT_NOCONTROLLER  0"
  29.                      "  GPCT_MOUSE         1" 
  30.                      "  GPCT_RELJOYSTICK   2"
  31.                      "  GPCT_ABSJOYSTICK   3"
  32.     ^ <primitive 223 7 pname>
  33. |
  34.   getButtonCode
  35.     ^ <primitive 223 10 pname>
  36. |
  37.   getQualifiers
  38.     ^ <primitive 223 11 pname>
  39. |
  40.   getXPos
  41.     ^ <primitive 223 12 pname>
  42. |
  43.   getYPos
  44.     ^ <primitive 223 13 pname>
  45. |
  46.   getIEAddress
  47.     ^ <primitive 223 14 pname>
  48. |
  49.   getTimeStamp
  50.     ^ <primitive 223 15 pname>
  51. |   
  52.   getTriggerKeys
  53.     ^ <primitive 223 16 pname>
  54. |
  55.   getTriggerTime
  56.     ^ <primitive 223 17 pname>
  57. |         
  58.   getTriggerXDelta
  59.     ^ <primitive 223 18 pname>
  60. |
  61.   getTriggerYDelta
  62.     ^ <primitive 223 19 pname>
  63. |
  64.   setKeyTransition: transType
  65.  
  66.     "GPTF_UPKEYS = 2, GPTF_DOWNKEYS = 1 or GPTF_DOWNKEYS + GPTF_UPKEYS:"
  67.  
  68.     (transType >= 1 & transType <= 3)
  69.       ifTrue:  [ <primitive 223 2 pname transType> ]
  70.       ifFalse: [ 'transType parameter out of range (1 to 3 only)!' print ]
  71. |
  72.   setTimeTransition: timeOutValue
  73.     (timeOutValue < 0)
  74.       ifTrue: [ 'timeOutValue out of range (S/B >= 0).' print.
  75.                 ^ nil 
  76.               ].
  77.     <primitive 223 3 pname timeOutValue>
  78. |
  79.   setXDeltaTransition: xvalue
  80.     <primitive 223 4 pname xvalue>
  81. |
  82.   setYDeltaTransition: yvalue
  83.     <primitive 223 5 pname yvalue>
  84. |
  85.   setControllerType: newCType
  86.     (newCType >= -1 & newCType <= 3)
  87.       ifTrue:  [ <primitive 223 8 pname newCType> ]
  88.       ifFalse: [ 'newCType parameter out of range (-1 to 3 only)!' print ]
  89.  
  90.             "GPCT_ALLOCATED    = -1 Allocated by another user"
  91.             "GPCT_NOCONTROLLER =  0 Not being used"
  92.             "GPCT_MOUSE        =  1" 
  93.             "GPCT_RELJOYSTICK  =  2" 
  94.             "GPCT_ABSJOYSTICK  =  3"
  95. |
  96.   waitForButton:    kvalue ! ret !
  97.     ret <- self getButtonCode.
  98.     [ret = kvalue] whileFalse: [ret <- self getButtonCode]
  99. |
  100.   waitForQualifier: qvalue ! ret !
  101.     ret <- self getQualifiers.
  102.     [ret = qvalue] whileFalse: [ret <- self getQualifiers]
  103. |
  104.   waitForXPos: xvalue ! ret !
  105.     ret <- self getXPos.
  106.     [ret = xvalue] whileFalse: [ret <- self getXPos]
  107. |
  108.   waitForYPos: yvalue ! ret !
  109.     ret <- self getYPos.
  110.     [ret = yvalue] whileFalse: [ret <- self getYPos]
  111. ]
  112.